home *** CD-ROM | disk | FTP | other *** search
/ Amiga Plus 2004 #9 / Amiga Plus CD - 2004 - No. 09.iso / amigaplus / tools / dev_libs / feelin040718 / arexx / f_update.rexx < prev   
OS/2 REXX Batch file  |  2004-08-03  |  4KB  |  139 lines

  1. /*
  2.  
  3.    $VER: F_Update.rexx 2.00 (16.03.2003) written by Olivier LAVIALE (gofromiel@numericable.fr)
  4.    ________________________________________________________________________
  5.  
  6.    This tool was written in ARexx because it can be easily modified to  fit
  7.    you  personnal  needs.  But  in  most cases you will not change a bit of
  8.    code.
  9.  
  10.    F_Update.rexx is often used by  F_Create.rexx,  depending  the  kind  of
  11.    project,  to  check  object  modules and update them if necessary before
  12.    executable  or  library  building.  F_Update.rexx  does  not   overrides
  13.    SCOPTIONS,  thus  you  can  modify  SC  options  using  local  or global
  14.    settings.
  15.  
  16.    For LIB projects, and if don't have modified anything, a  perfect  local
  17.    GST  is  maintained  along your project, this GST should be used against
  18.    any other, so checkout your local SCOPTIONS, for your own happyness  (or
  19.    clone the one in Feelin:Sources/_TEMPLATE).
  20.  
  21.    Enjoy !!
  22.  
  23.  */
  24.  
  25. /*+*/Main:
  26.  
  27. SIGNAL ON FAILURE
  28.  
  29. IF ~Show('L','rexxsupport.library') THEN DO
  30.    IF ~AddLib('rexxsupport.library',0,-30) THEN DO
  31.       Say('Unable to open rexxsupport.library')
  32.       EXIT 10
  33.    END
  34. END
  35.  
  36. PARSE ARG project dest vers revi .
  37.  
  38. dirl = ShowDir('',FILE,' ')
  39. date = Translate(Date(E),'-','/')
  40. time = Time()
  41.  
  42. CALL CheckHeader()
  43. CALL CheckSources()
  44.  
  45. EXIT
  46. /***/
  47.  
  48. /*** Procedures ************************************************************/
  49.  
  50. /*+*/CheckHeader:
  51.    up = 1
  52.  
  53.    IF ~Exists('Header.h') THEN DO
  54.       RETURN
  55.    END
  56.  
  57.    IF Exists(objc) THEN DO
  58.       state_file = StateF('Include:Feelin.GST')
  59.       state_objc = StateF('Header.GST')
  60.  
  61.       day1 = Word(state_file,5)
  62.       day2 = Word(state_objc,5)
  63.       tik1 = Word(state_file,6) * 60 * 50 + Word(state_file,7)
  64.       tik2 = Word(state_objc,6) * 60 * 50 + Word(state_objc,7)
  65.  
  66.       IF day1 = day2 THEN DO
  67.          IF tik1 < tik2 THEN up = 0
  68.       END
  69.       ELSE IF day1 < day2 THEN up = 0
  70.    END
  71. /*
  72.    IF up THEN Say(day1 day2 ',' tik1 tik2)
  73.    RETURN
  74. */
  75.    src = 'Header.h'
  76.    obj = 'Header.gst'
  77.  
  78.    IF up = 0 THEN up = Compare(src,obj,0)
  79.    ELSE           Say('Updating Header.GST (New Feelin.GST)')
  80.  
  81.    IF up THEN DO
  82.       ADDRESS COMMAND 'Delete >NIL:' obj '#?.o'
  83.       ADDRESS COMMAND 'SC RESETOPTS NOICON IGNORE 73 NOOBJECTNAME MGST=Header.gst Header.h'
  84.       ADDRESS COMMAND 'SetDate FILE' src 'DATE' date 'TIME' time
  85.       ADDRESS COMMAND 'SetDate FILE' obj 'DATE' date 'TIME' time
  86.    END
  87. RETURN
  88. /***/
  89. /*+*/CheckSources:
  90.    list = ''
  91.  
  92.    DO i = 1 TO Words(dirl)
  93.       src = Word(dirl,i)
  94.  
  95.       IF Right(src,2) = '.c'       THEN list = list src
  96.       ELSE IF Right(src,2) = '.a'  THEN list = list src
  97.    END
  98.  
  99.    DO i = 1 TO Words(list)
  100.       src = Word(list,i)
  101.       obj = Left(src,Length(src) - 1) || 'o'
  102.  
  103.       IF Compare(src,obj,0) = 1 THEN DO
  104.          ADDRESS COMMAND 'Delete >NIL:' obj
  105.  
  106.          IF Right(src,2) = '.c' THEN ADDRESS COMMAND 'SC NOVERSION' src
  107.          ELSE                        ADDRESS COMMAND 'PhxAss QUIET' src
  108.  
  109.          ADDRESS COMMAND 'SetDate FILE' src 'DATE' date 'TIME' time
  110.          ADDRESS COMMAND 'SetDate FILE' obj 'DATE' date 'TIME' time
  111.       END
  112.    END
  113.  
  114.    RETURN
  115. /***/
  116.  
  117. /*+*/Compare: PROCEDURE
  118.    PARSE ARG src, obj, quiet
  119.  
  120.    state_src = StateF(src)
  121.    state_obj = StateF(obj)
  122.    update    = 0
  123.  
  124.    IF Word(state_src,5) ~= Word(state_obj,5) THEN update = 1
  125.    IF Word(state_src,6) ~= Word(state_obj,6) THEN update = 1
  126.    IF Word(state_src,7) ~= Word(state_obj,7) THEN update = 1
  127.  
  128.    IF quiet = 0 THEN DO
  129.       IF update = 1 THEN Say('Updating ' || src || '...')
  130.       ELSE               Say(src || ' ok')
  131.    END
  132.  
  133.    RETURN update
  134. /***/
  135. /*+*/Failure:
  136.    Say('Error compiling ' src || '.')
  137.    EXIT 20
  138. /***/
  139.